package com.zyf.project.binaryproto.encoder;

import com.zyf.project.binaryproto.specification.FieldSpecification;
import utils.binary.BytesSlices;

import java.lang.reflect.Method;

/**
 * <h1>数据契约字段编码器</h1>
 *
 * @author Zhou Yifan
 */
public interface FieldEncoder extends SliceEncoder {

    /**
     * 获取 Get 方法
     *
     * @return {@link Method}
     */
    Method getReader();

    /**
     * 获取数据契约字段格式标准
     *
     * @return {@link FieldSpecification}
     */
    FieldSpecification getFieldSpecification();

    /**
     * 字段解码
     *
     * @param fieldBytes 一组相关联的数据片段 {@link BytesSlices}
     * @return 对象 {@link Object}
     */
    Object decodeField(BytesSlices fieldBytes);

}
